In conventional automation software programming environments, programmers use a multitude of separate tools, each with a specific purpose for programming an aspect of the automation behavior. For example, one tool sets up a network protocol, another allocates memory for input and output devices, and yet another is used to encode instructions. These tools are fully separate and must be manually configured; any mismatch between encodings used in one tool will cause other tools or the automation in general to fail. Furthermore, there is little mapping of the language of a given tool with the actual physical hardware used to accomplish the automation. Many of the logical elements defined within an automation tool serve to establish mappings between the constructs of the tools, themselves, and are only indirectly tied to performing any kind of machine behavior.
Some conventional applications claim that although they are commonly used for simulation, they may also produce runtime functions through porting their instructions to a control device. For example, in the field of model-based control, one uses the kinds of equations provided by simulation systems to write control programs. In this situation, there is often no actual simulation of the physical devices. Rather, the programming methods that one would normally use to program a simulation are being used to program a control function. Other systems translate their simulation code to a lower-level language, such as C, so that it can be run in an environment without requiring a special runtime. However, the simulation code is still just being used as a general-purpose programming language rather than simulating the devices and environment in which the automation is being deployed.
Some conventional controllers and data acquisition boards are programmed using non-standard or proprietary languages. These controllers have a wide variety and some will perform a kind of simulation in the sense of being able to control the state of a specified I/O manually during testing. For example, a home automation device may allow the user to program a light to be turned on or off via some kind of web interface. However, such conventional techniques do not go beyond simple switches and manually programmed behaviors to be able to offer physical simulation that is specified, for example, using the properties of the objects being simulated.